package com.campus.food.model.dto;

import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;

/**
 * 订单数据传输对象
 * 
 * @author Claude3.7 Sonnet
 * @since 2025-05-29
 */
@Data
public class OrderDTO {
    
    /**
     * 商家ID
     */
    @NotNull(message = "商家ID不能为空")
    private Long merchantId;
    
    /**
     * 地址ID
     */
    @NotNull(message = "地址ID不能为空")
    private Long addressId;
    
    /**
     * 支付方式：1-微信，2-支付宝，3-校园卡
     */
    @NotNull(message = "支付方式不能为空")
    private Integer paymentMethod;
    
    /**
     * 订单备注
     */
    @Size(max = 255, message = "订单备注不能超过255个字符")
    private String remark;
    
    /**
     * 用户ID（从当前登录用户获取）
     */
    private Long userId;
    
    /**
     * 是否从购物车创建订单
     */
    private Boolean fromCart = false;
    
    /**
     * 订单总价
     */
    private String totalPrice;
    
    /**
     * 订单项列表
     */
    @NotNull(message = "订单项不能为空")
    @Size(min = 1, message = "至少要有一个订单项")
    private List<OrderItemDTO> items;
    
    /**
     * 订单项数据传输对象
     */
    @Data
    public static class OrderItemDTO {
        
        /**
         * 菜品ID
         */
        @NotNull(message = "菜品ID不能为空")
        private Long foodId;
        
        /**
         * 菜品名称
         */
        private String foodName;
        
        /**
         * 菜品图片
         */
        private String foodImage;
        
        /**
         * 菜品单价
         */
        private String price;
        
        /**
         * 购买数量
         */
        @NotNull(message = "购买数量不能为空")
        private Integer quantity;
        
        /**
         * 小计金额
         */
        private String subtotal;
    }
} 